package model;

import java.awt.Point;

/**
 * O tabuleiro do jogo.
 */
public class Board {

	/**
	 * As peças que estão em cada casa do tabuleiro.
	 */
	private PieceType[][] pieces;

	/**
	 * Inicializa esse tabuleiro com todas as casas vazias.
	 */
	public Board(int rows, int cols) {
		pieces = new PieceType[rows][cols];
		for (int i = 0; i < rows; i++) {
			for (int j = 0; j < cols; j++) {
				pieces[i][j] = PieceType.NONE;
			}
		}
	}

	/**
	 * Escolhe a peça de uma casa do tabuleiro.
	 */
	public void setPiece(int i, int j, PieceType p) {
		pieces[i][j] = p;
	}
	public void setPiece(Point pos, PieceType p) {
		pieces[pos.x][pos.y] = p; 
	}
	
	/**
	 * Consulta a peça que está em uma casa do tabuleiro.
	 */
	public PieceType getPiece(int i, int j) {
		return pieces[i][j];
	}
	public PieceType getPiece(Point pos) {
		return pieces[pos.x][pos.y];
	}
	
	/**
	 * Retorna a matriz de todas as peças, para facilitar a iteração.
	 */
	public PieceType[][] getPieces() {
		return pieces;
	}
	
	/**
	 * Informa a quantidade de linhas no tabuleiro.
	 */
	public int getRows() {
		return pieces.length;
	}
	
	/**
	 * Informa a quantidade de colunas no tabuleiro.
	 */
	public int getCols() {
		return pieces[0].length;
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		for (PieceType[] array : pieces) {
			for (PieceType p : array) {
				sb.append(p.toString());
			}
		}
		return sb.toString();
	}

}
